import store from "../store";
import Cache from '../utils/cache';
import {
	Debounce
} from '@/utils/validate.js'
// #ifdef H5
import {
	isWeixin
} from "../utils";
import auth from './wechat';
// #endif

import {
	LOGIN_STATUS,
	USER_INFO,
	EXPIRES_TIME,
	STATE_R_KEY,
	BACK_URL,
	PATIENT_IFNO,
	PATIENT_LIST,
	OPENID
} from './../config/cache';

function prePage() {
	let pages = getCurrentPages();
	let prePage = pages[pages.length - 1];
	return prePage.route;
}

export const toLogin = Debounce(_toLogin, 800)

export function _toLogin(push, pathLogin) {


	console.info("_toLogin");
	store.commit("LOGOUT");
	let path = '';
	// #ifdef MP
	path = prePage();
	console.info("_toLogin MP path："+path);
	// #endif
	let login_back_url = Cache.get(BACK_URL);
	// #ifdef H5
	// path = location.href;
	path = location.pathname + location.search;
	console.info("_toLogin H5 path："+path);
	// #endif
	console.info("_toLogin pathLogin："+pathLogin);
	if (!pathLogin) {
		pathLogin = '/hosp/login/wechat_login'
		if (path.indexOf('?') !== -1) {
			Cache.set(BACK_URL, path+'&go_longin=1');
		} else {
			Cache.set(BACK_URL, path+'?go_longin=1');
		}
	}

	// #ifdef H5
	if (isWeixin()) {
		// let urlData = location.pathname + location.search
		let urlData = location.pathname;
		if (urlData.indexOf('?') !== -1) {
			urlData += '&go_longin=1';
		} else {
			urlData += '?go_longin=1';
		}
		console.info("Cache.has('snsapiKey'):" + Cache.has('snsapiKey'));
		if (!Cache.has('snsapiKey')) {
			auth.oAuth('snsapi_base', urlData);
		} else {
			console.info("login_back_url:" + login_back_url);
			if (['/hosp/login/wechat_login'].indexOf(login_back_url) == -1) {
				uni.navigateTo({
					url: '/hosp/login/wechat_login'
				})
			}
		}
	} else {
		console.info("login_back_url:" + login_back_url);
		if (['/hosp/login/h5_login'].indexOf(login_back_url) == -1) {
			uni.navigateTo({
				url: '/hosp/login/h5_login'
			})
		}
	}
	// #endif


	if (['main/user/index', '/main/mine/mine'].indexOf(login_back_url) === -1) {
		// #ifdef MP
		// uni.navigateTo({
		// 	url: '/hosp/login/wechat_login'
		// })
		// #endif
	}
}


export function checkLogin() {
	let token = Cache.get(LOGIN_STATUS);
	let expiresTime = Cache.get(EXPIRES_TIME);
	let newTime = Math.round(new Date() / 1000);
	if (expiresTime < newTime || !token) {
		Cache.clear(LOGIN_STATUS);
		Cache.clear(EXPIRES_TIME);
		Cache.clear(USER_INFO);
		Cache.clear(PATIENT_IFNO);
		Cache.clear(PATIENT_LIST);
		Cache.clear(STATE_R_KEY);
		return false;
	} else {
		store.commit('UPDATE_LOGIN', token);
		let userInfo = Cache.get(USER_INFO, true);
		if (userInfo) {
			store.commit('UPDATE_USERINFO', userInfo);
		}
		return true;
	}

}